The present invention relates generally to the Universal Serial Bus (USB) and in particular to a method of maintaining an active USB state without data transfer.
The USB is a highly popular, industry standard, serial bus that provides data communications between, e.g., a data processing system, and a wide variety of peripheral devices, including user interface equipment (keyboard, mouse, joystick, touchpad, and the like), printers, scanners, data storage devices, digital cameras, video game controllers, and many others. Indeed, only monitors and video equipment, or similar devices with very high data transfer bandwidth needs, cannot be adequately served by the 480 Mb/s maximum transfer speed of version 2.0 of the USB. The USB is a very user-friendly bus. Up to 127 devices may connect to a USB port, including hubs of additional ports, to create a tree structure. The bus is “hot pluggable,” and is “plug and play” for most devices, with an enumeration protocol and standardized device classes, allowing the USB host to recognize, and generic device drivers to control, most USB devices.
Equally important for several classes of devices is that the USB bus provides power at a nominal 5 V and up to 500 mA, allowing devices to be bus-powered. This obviates the need for a low-power device to include batteries or an external source of power. Portable flash memory data storage devices—variously known as flash drives, thumb drives, pen drives, and the like—are perhaps the best-known examples of USB bus-powered devices, although a broad variety of other bus-powered devices are known in the art, including reading lights, fans, and even coffee warmers.
The USB specification defines a Suspend state, during which a USB device may draw no more than 2.5 mA (including required pull up resistors), averaged over a 1.0 second interval. A USB device should automatically enter Suspend state if no upstream data transfer activity (an Idle state) persists on the bus for 3 msec. To prevent devices from entering Suspend state during periods of no data transfer, the USB host periodically sends a “keep alive” signal (a Start of Frame, or SOF token) on the bus. The USB host may implement a Global Suspend by ceasing all transmission on the bus (including the SOF token), allowing each device on the bus to enter Suspend state as it recognizes an Idle bus state. An individual USB bus segment may be Selectively Suspended by blocking all transmissions downstream of a USB hub port. Any non-idle signaling by a port will trigger all downstream USB devices to Resume from Suspend state, and a device with remote wakeup capability can use Resume signaling to exit a Suspend state if the device has data to send (e.g., if a mouse detects movement or a button press).